


var map;
var myPos;
var directionsRenderer;
var directionsService = new google.maps.DirectionsService();
var distance = new Array();
var latlng = new Array();
var numMenor = 100000;
var destino;
var rendererOptions = {
    draggable: true
};
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var markers = [];
var markersPosicion = [];
var totalMarkersPosicion = false;
var show = true;


//Geolocalizamos al usuario y cargamos las doordenadas a la variable myPos

if (navigator && navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(geoOK, geoKO);
} else {
    geoMaxmind();
}
function geoOK(position) {
    if(show){
        showMap(position.coords.latitude, position.coords.longitude);
    }else{
        actualizar(position.coords.latitude, position.coords.longitude);
    }
}
function geoMaxmind() {
    if(show){
        showMap(geoip_latitude(), geoip_longitude());
    }else{
        actualizar(position.coords.latitude, position.coords.longitude);
    }
}

function actualizar(a,b){
    
    $('#lat').val(a);
    $('#lon').val(b);
}

function geoKO(err) {
    if (err.code == 1) {
        error('El usuario ha denegado el permiso para obtener informacion de ubicacion.');
    } else if (err.code == 2) {
        error('Tu ubicacion no se puede determinar.');
    } else if (err.code == 3) {
        error('TimeOut.')
    } else {
        error('No sabemos que pasó pero ocurrio un error.');
    }
}

//Muestra el mapa en el punto que se encuentra el usuario para luego recargarlo.
//Hacemos contador para definir todos los puntos en el mapa y le cargamos las variables desde la base de datos.

function showMap(lat, lon) {
    myPos = new google.maps.LatLng(lat, lon);
    show = false;
    directionsDisplay = new google.maps.DirectionsRenderer();

    $('#lat').val(lat);
    $('#lon').val(lon);

    var mapOptions = {
        zoom: 15,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        center: myPos
    }
    map = new google.maps.Map(document.getElementById('mapa'), mapOptions);


    var marker = new google.maps.Marker({
        position: myPos,
        title: "Mi Posicion",
        icon: 'images/usuario.png',
        draggable: false,
        animation: google.maps.Animation.DROP

    });

    setAllMapPosicion();
    addMarkerPosicion(map);
    directionsRenderer = new google.maps.DirectionsRenderer();
    directionsRenderer.setPanel(document.getElementById('directionsPanel'));
    directionsRenderer.setMap(map);
    

}

function error(msg) {
    alert(msg);
}





function travelToAddress() {
    myPos = new google.maps.LatLng($('#lat').val(), $('#lon').val());
    //Obtenemos la direccion
    destino = new google.maps.LatLng($('#Latitud').val(), $('#Longitud').val());
    directionsService = new google.maps.DirectionsService();
    // opciones de busqueda
    var request = {
        origin: myPos,
        destination: destino,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };

    deleteMarkers();
    addMarker(map);
    //  marker1.setMap(map);
    directionsDisplay.setMap(map);
    directionsService.route(request, getRuta);
    calcRoute();

}

function getRuta(result, status) {

    if (status == google.maps.DirectionsStatus.OK) {
        directionsRenderer.setDirections(result);
    } else {
        error("Ha ocurrido un error debido a : " + status);
    }
}

//function initialize() {
//
//    myPos = new google.maps.LatLng($('#lat').val(), $('#lon').val());
//
//    directionsDisplay = new google.maps.DirectionsRenderer();
//    var mapOptions = {
//        zoom: 15,
//        mapTypeId: google.maps.MapTypeId.ROADMAP,
//        center: myPos
//    }
//    map = new google.maps.Map(document.getElementById('mapa'), mapOptions);
//
////    var control = document.getElementById('control');
////    control.style.display = 'block';
////    
////    map.controls[google.maps.ControlPosition.TOP_CENTER].push(control);
//}


function error(msg) {
    alert(msg);
}
//Funciones para cambiar marcadores del mapa
function addMarker(location) {
    var marker = new google.maps.Marker({
        position: destino,
        title: "Sucursal Elegida",
        icon: $("#Titulo").val(),
        draggable: false,
        zIndex: 4000,
        map: location
    });
    markers.push(marker);
}
function setAllMap(map) {
    for (var i = 0; i < markers.length; i++) {
        markers[i].setMap(map);
    }
}
function clearMarkers() {
    setAllMap(null);
}
function deleteMarkers() {
    clearMarkers();
    markers = [];
}
//Funciones para cambiar marcador de la posicion del mapa
function addMarkerPosicion(location) {
    myPos = new google.maps.LatLng($('#lat').val(), $('#lon').val());
    var marker = new google.maps.Marker({
        position: myPos,
        title: "Mi Posicion",
        //icon: 'images/AcapMarker.png',
        draggable: false,
        zIndex: 4000,
        map: location
    });

    totalMarkersPosicion = true;

    markersPosicion.push(marker);
}
function setAllMapPosicion(map) {
    if (totalMarkersPosicion) {
        for (var i = 0; i < markersPosicion.length; i++) {
            markersPosicion[i].setMap(map);
        }
        totalMarkersPosicion = false;
    }
}

function calcRoute() {

    var myPosi = new google.maps.LatLng($('#lat').val(), $('#lon').val());
    destino = new google.maps.LatLng($('#Latitud').val(), $('#Longitud').val()); 
    var request = {
        origin: myPosi,
        destination: destino,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
        }
    });
}

$(document).ready(function() {

    var elegido = false;



    $('#idcoordenada').change(function() {
        if ($(this).val() * 1 != 0) {
            $.post("/MapWebApplication/buscarCoordenadas", {
                'coordenada': $(this).val()
            }, function(data) {

                if ($.trim(data) != false) {
                    var partes = $.trim(data).split("@");
                    $('#Latitud').val(partes[0]);
                    $('#Longitud').val(partes[1]);
                    $('#Titulo').val(partes[2]);
                    $('#Descripcion').val(partes[3]);
                    travelToAddress();
                //                    setInterval(function() {
                //                        if (navigator && navigator.geolocation) {
                //                            navigator.geolocation.getCurrentPosition(geoOK, geoKO);
                //                        } else {
                //                            geoMaxmind();
                //                        }
                //
                //                        travelToAddress();
                //
                //                    }, 10000);
                }
            });
        }
    }
    );



});


